home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 38 / Amiga Format CD38 (1999-03-15)(Future Publishing)(GB)(Track 1 of 3)[!][issue 1999-04].iso / -seriously_amiga- / archivers / lzhutils_src / xsplit.c < prev    next >
C/C++ Source or Header  |  1999-01-25  |  2KB  |  76 lines

  1. /*
  2.  * XSplit - Split a file into more <smaller> files.
  3.  *            
  4.  *
  5.  * Copyright © 1995 The Xperts Group Inc. All Rights Reserved.
  6.  * Author: Manolis S Pappas.
  7.  * Version: 1.1a
  8.  *
  9.  *
  10.  */
  11.  
  12. #include <stdio.h>
  13. #include <string.h>
  14.  
  15. #define VERSION "1.1a"
  16. #define EXIT_FAILURE 1
  17.  
  18. static const char versid[]="$VER: XSplit v1.1a (7.1.96)";
  19.  
  20. FILE *open_vol(name, no)
  21. char *name;
  22. long no;
  23. {
  24.   char work[1024];
  25.  
  26.   if (no)
  27.     sprintf(work, "%s.%02d", name, no);
  28.   else
  29.     sprintf(work, "%s.000", name);
  30.  
  31.   return fopen(work, "wb");
  32. }
  33.  
  34. int main(argc, argv)
  35. int argc;
  36. char **argv;
  37. {
  38.   char buffer[1024];              /* Small I/O buffer */
  39.   FILE *in, *out;
  40.   long size, i, j = 1024, vol_no = 0;
  41.  
  42.   if (argc != 4) {
  43.     printf("XSplit v%s\n",VERSION);
  44.     printf("Copyright (©) 1995-96, The Xperts Group Inc.\n");
  45.     printf("All Rights Reserved Worldwide.\n");
  46.     printf("Author: Manolis S Pappas.\n\n");
  47.     printf("Usage: %s <basefilesize in KB> <infile> <outbasename>\n", argv[0]);
  48.     exit(EXIT_FAILURE);
  49.   }
  50.  
  51.   size = atoi(argv[1]);
  52.  
  53.   if (in = fopen(argv[2], "rb")) {
  54.     while (!feof(in)) {
  55.       if (out = open_vol(argv[3], vol_no++)) {
  56.         i = size;
  57.  
  58.         while((i--) && (j == 1024)) {
  59.           j = fread(buffer, 1, 1024, in);
  60.           fwrite(buffer, 1, j, out);
  61.         }
  62.         fclose(out);
  63.       } else {
  64.         fclose(in);
  65.         printf("Error opening volume %d!\n\n", vol_no);
  66.         exit(EXIT_FAILURE);
  67.       }
  68.     }
  69.   } else {
  70.     printf("Error opening source!!\n\n");
  71.     exit(EXIT_FAILURE);
  72.   }
  73.  
  74.   return 0;
  75. }
  76.